package com.cloudbroker.bcs.platform.dav.bizapi.service.viewpoint;

import com.cloudbroker.bcs.common.annotation.MayLogin;
import com.cloudbroker.bcs.common.annotation.NoLogin;
import com.cloudbroker.bcs.common.annotation.RequiredPermissions;
import com.cloudbroker.bcs.common.entity.HSBCPSBackVO;
import com.cloudbroker.bcs.platform.dav.bizapi.constants.PermissionsValue;
import com.cloudbroker.bcs.platform.dav.bizapi.service.base.vo.HSBCPSVO;
import com.cloudbroker.bcs.platform.dav.bizapi.service.base.vo.ListQueryVO;
import com.cloudbroker.bcs.platform.dav.bizapi.service.business.system.back.SelfViewpointBack;
import com.cloudbroker.bcs.platform.dav.bizapi.service.business.system.back.SelfViewpointResult;
import com.cloudbroker.bcs.platform.dav.bizapi.service.business.system.vo.*;
import com.cloudbroker.bcs.platform.dav.bizapi.service.viewpoint.result.*;
import com.cloudbroker.bcs.platform.dav.bizapi.service.viewpoint.vo.*;

public interface ViewPointBizService {
    
    @MayLogin
    public ViewpointFansList funcViewpointListByFans(ViewpointListForm param);
    
    @NoLogin
    public ViewpointCommentResult funcCommentViewNologin(ViewpointCommentForm param);
    
    @RequiredPermissions(value = { PermissionsValue.VIEWPOINT })
    public ViewpointCommentResult funcCommentView(ViewpointCommentForm param);
    
    @RequiredPermissions(value = { PermissionsValue.VIEWPOINT })
    public CommentSaveResult funcCommentSave(ViewpointCommentSaveForm param);
    
    @RequiredPermissions(value = { PermissionsValue.VIEWPOINT })
    public ViewpointSpitslotUpvoteResult funcCommentSpitslotUpvote(ViewpointSpitslotUpvoteForm param);
    
    @RequiredPermissions(value = { PermissionsValue.VIEWPOINT })
    public ReplyListData funcViewpointReplayDetailList(ReplyListForm param);
    
    @RequiredPermissions(value = { PermissionsValue.VIEWPOINT })
    public ViewpointContentData funcViewpointContent(ViewPointIdForm param);
    
    @RequiredPermissions(value = { PermissionsValue.VIEWPOINT })
    public ViewpointCommentResult funcCommentViewByBroker(ViewpointCommentForm param);

    @NoLogin
    public HSBCPSBackVO funcViewpointContentConvert(HSBCPSVO param);
    
    public ViewpointNoLoginList funcViewpointListByTenant(ListQueryVO param);

    @NoLogin
    public ViewpointNoLoginList funcViewpointListByTenantNologin(TenantKeyListQryForm param);

    /**
     * 获取自媒体观点管理列表
     * @param form
     * @return
     */
    @NoLogin
    public SelfViewpointResult funcSelfViewpointsList(SelfViewpointForm form);

    /**
     * 是否开启自媒体观点审核
     * @param form
     * @return
     */
    @NoLogin
    public HSBCPSBackVO funcSelfViewpointReview(SelfViewpointReviewForm form);

    /**
     * 自媒体观点是否通过审核
     * @param form
     * @return
     */
    @NoLogin
    public HSBCPSBackVO funcSelfViewpointReviewStatus(SelfViewpointStatusForm form);

    /**
     * 获取单个自媒体观点的详情
     * @param form
     * @return
     */
    public SelfViewpointBack funcSelfViewpointById(SelfViewpointByIdForm form);

    /**
     * 粉丝端动态推送列表
     * @param form
     * @return
     */
    @MayLogin
    public DynamicListResult funcGetDynamicList(DynamicListForm form);

    /**
     * 粉丝端动态组合的当日成交列表
     * @param form
     * @return
     */
    @MayLogin
    public LTBRealtimeQryResult funcRealtimeQryLoadMore(LTBRealtimeQryListForm form);
}
